package com.ruoyi.project.oms.paeaAuTypeErrPointRel.service.impl;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.text.Convert;
import com.ruoyi.project.oms.paeaAuTypeErrPointRel.domain.PaeaAuTypeErrPointRel;
import com.ruoyi.project.oms.paeaAuTypeErrPointRel.mapper.PaeaAuTypeErrPointRelMapper;
import com.ruoyi.project.oms.paeaAuTypeErrPointRel.service.IPaeaAuTypeErrPointRelService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

/**
 * 监控类型差错点关系Service业务层处理
 *
 * @author 关晓强
 * @date 2020-03-14
 */
@Service
@Slf4j
public class PaeaAuTypeErrPointRelServiceImpl extends ServiceImpl<PaeaAuTypeErrPointRelMapper, PaeaAuTypeErrPointRel> implements IPaeaAuTypeErrPointRelService
{
    @Autowired
    private PaeaAuTypeErrPointRelMapper paeaAuTypeErrPointRelMapper;

    /**
     * 查询监控类型差错点关系
     *
     * @param id 监控类型差错点关系ID
     * @return 监控类型差错点关系
     */
    @Override
    public PaeaAuTypeErrPointRel selectPaeaAuTypeErrPointRelById(String id)
    {
        return paeaAuTypeErrPointRelMapper.selectPaeaAuTypeErrPointRelById(id);
    }

    /**
     * 查询监控类型差错点关系列表
     *
     * @param paeaAuTypeErrPointRel 监控类型差错点关系
     * @return 监控类型差错点关系
     */
    @Override
    public List<PaeaAuTypeErrPointRel> selectPaeaAuTypeErrPointRelList(PaeaAuTypeErrPointRel paeaAuTypeErrPointRel)
    {
        return paeaAuTypeErrPointRelMapper.selectPaeaAuTypeErrPointRelList(paeaAuTypeErrPointRel);
    }

    /**
     * 新增监控类型差错点关系
     *
     * @param paeaAuTypeErrPointRel 监控类型差错点关系
     * @return 结果
     */
    @Override
    public int insertPaeaAuTypeErrPointRel(PaeaAuTypeErrPointRel paeaAuTypeErrPointRel)
    {
        return paeaAuTypeErrPointRelMapper.insertPaeaAuTypeErrPointRel(paeaAuTypeErrPointRel);
    }

    /**
     * 修改监控类型差错点关系
     *
     * @param paeaAuTypeErrPointRel 监控类型差错点关系
     * @return 结果
     */
    @Override
    public int updatePaeaAuTypeErrPointRel(PaeaAuTypeErrPointRel paeaAuTypeErrPointRel)
    {
        return paeaAuTypeErrPointRelMapper.updatePaeaAuTypeErrPointRel(paeaAuTypeErrPointRel);
    }

    /**
     * 删除监控类型差错点关系对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deletePaeaAuTypeErrPointRelByIds(String ids)
    {
        return paeaAuTypeErrPointRelMapper.deletePaeaAuTypeErrPointRelByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除监控类型差错点关系信息
     *
     * @param id 监控类型差错点关系ID
     * @return 结果
     */
    @Override
    public int deletePaeaAuTypeErrPointRelById(String id)
    {
        return paeaAuTypeErrPointRelMapper.deletePaeaAuTypeErrPointRelById(id);
    }

    /**
     * 监督模型分配监督点
     * @param auTypeId 监督模型Id
     * @param ids 分配的监督点Id
     * @return 受影响记录数
     */
    @Override
    public List<PaeaAuTypeErrPointRel> erPointConfigSave(String auTypeId, String ids) {
        if (!StringUtils.isNull(auTypeId)) {
            this.remove(new UpdateWrapper<PaeaAuTypeErrPointRel>().eq("au_type_id",auTypeId));
        }
        List<PaeaAuTypeErrPointRel> paeaAuTypeErrPointRelList = Lists.newArrayList();
        if (!StringUtils.isEmpty(ids)) {
            Arrays.stream(Convert.toStrArray(ids)).forEach(id -> {
                PaeaAuTypeErrPointRel paeaAuTypeErrPointRel = new PaeaAuTypeErrPointRel();
                paeaAuTypeErrPointRel.setAuTypeId(auTypeId);
                paeaAuTypeErrPointRel.setErrPointId(id);
                paeaAuTypeErrPointRelList.add(paeaAuTypeErrPointRel);
            });
            this.saveBatch(paeaAuTypeErrPointRelList);
            int addCount = paeaAuTypeErrPointRelList.size();
            log.info(String.format("监督模型分配监督点成功：insert[%s]", addCount));
        }
        return paeaAuTypeErrPointRelList;
    }
}
